package com.jhws.core.dataUpdate.bo;

import java.util.List;
import java.util.Map;

public interface IDataUpdateModule {

    /**
     * 获取模块名
     * @return
     */
    String [] getModuleName();

    /**
     * 获取某用户的专属通知数据
     * @param username      账号
     * @param timeStamp     通知写入的时间戳
     * @param module        有推送需求的模块名
     * @param moduleParams  模块专属参数
     * @return              返回一个List或者null
     * @throws Exception
     */
    DataUpdateObject getUserModuleData(String username, String ownerCode,Long timeStamp, String module, Map<String,String> moduleParams) throws Exception;

    /**
     * 获取模块的增量更新数据
     * @param label          关注的增量标签，和推送的一致，可以是账号或者小区或者Mobile之类的全局标签
     * @param timeStamp      上次查询的时间戳
     * @param module         有增量和推送需求的模块名
     * @param moduleParams   模块专用参数
     * @return               返回一个Object或者null
     * @throws Exception
     */
    DataUpdateObject getLabelModuleData(String label, Long timeStamp, String module, Map<String,String> moduleParams) throws Exception;

    /**
     * 接口实现类加载完后调用注册自身到核心服务
     * 因此必须注解@PostConstruct
     */
    void registerModule();
}
